export class example extends plugin {
    constructor() {
        super({
            /** 功能名称 */
            name: '[SB]获取源码',
            /** 功能描述 */
            dsc: '发送消息源代码',
            /** https://oicqjs.github.io/oicq/#events */
            event: 'message',
            /** 优先级，数字越小等级越高 */
            priority: -114514,
            rule: [
                {
                    /** 命令正则匹配 */
                    reg: '^#*(获取)?源码$',
                    /** 执行方法 */
                    fnc: 'code'
                }
            ]
        })
    }

    async code(e) {
        if (e.source) {
            let source
            // 获取原消息
            if (e.group?.getChatHistory) {
                source = (await e.group.getChatHistory(e.source.seq, 1)).pop()
            } else if (e.friend?.getChatHistory) {
                source = (await e.friend.getChatHistory(e.source.time, 1)).pop()
            }
            return this.reply(sendMsg(source.message))
        }
        /** 设置上下文，后续接收到内容会执行doRep方法 */
        this.setContext('doRep')
        this.reply('请发送要解码的内容', false, { at: true })
    }

    /** 接受内容 */
    doRep() {
        this.reply(sendMsg(this.e.message))
        /** 结束上下文 */
        this.finish('doRep')
    }
}

function sendMsg(message) {
    /** 复读内容 */
    logger.mark(message)
    let msg = JSON.stringify(message)
    msg = formatJson(message)
    return msg
}

//格式化json
function formatJson(json) {
    let msg = JSON.stringify(json)
    msg = msg.replace(/\\/g, '').replace(/"{/g, '{').replace(/}"/g, '\n}')
    msg = msg.replace(/","/g, '",\n"')
    return msg
}